#ifndef COMMONPAGE_H
#define COMMONPAGE_H

#include <QWidget>
#include "musiclist.h"
#include <QMediaPlaylist>

namespace Ui {
class CommonPage;
}

//将音乐列表类型进行区分
enum PageType
{
    LIKE_PAGE,//我喜欢页面
    LOCAL_PAGE,//本地下载页面
    HISTORY_PAGE//最近播放页面
};

class CommonPage : public QWidget
{
    Q_OBJECT

public:
    explicit CommonPage(QWidget *parent = nullptr);
    ~CommonPage();
    //设置page页的文本信息和图片
    void setCommonPageUI(const QString& text,const QString& imagePath);
    //设置此页面的音乐列表类别[我喜欢、本地下载、最近播放]
    void setMusicListType(PageType pageType);
    //添加Music到MusicPage中
    void addMusicToMusicPage(MusicList& musicList);
    //将Music(要更新的音乐保存在musicOfPage中)更新到此page页面的ListWidget控件中
    void reFresh(MusicList& musicList);
    //将歌曲添加到播放列表中
    void addMusicToPlaylist(MusicList &musicList, QMediaPlaylist *playList);
    //通过索引来获取Music的Id信息
    QString getMusicIdByIndex(int index);
    //设置音乐图片-全部播放按钮左侧的图片
    void setMusicImage(QPixmap pixmap);

signals:
    //commonpage需要通知QQMusic，让其中的likepage localpage recentpage去更新页面的歌曲信息
    void updataLikeMusic(bool isLike, const QString& musicId);
    //点击播放全部按钮后，此类给QQMusic类通知的信号
    void playAll(PageType pageType);
    //双击ListWidget中的Item后播放此双击的音乐-设计信号 当前页面地址和Item在ListWidget中的下标
    void playMusicByIndex(CommonPage*,int);

private:
    Ui::CommonPage *ui;

    PageType pageType; //保存该页面的分类(类别说明)
    QVector<QString> musicOfPage; //保存pageType对应页面的歌曲ID
};

#endif // COMMONPAGE_H
